home *** CD-ROM | disk | FTP | other *** search
- #ifndef OS_H
- #define OS_H
-
- #include <proto/exec.h>
- #include <exec/memory.h>
- #include <proto/dos.h>
-
- #include <string.h>
-
-
- #define OS_Malloc(x) AllocVec( x, MEMF_CLEAR )
- #define OS_Free(x) FreeVec( x )
-
- #define OS_Delay(x) Delay( (x) / 20 )
-
- #define OS_sprintf sprintf
-
-
- /*
- ** Datentypen
- */
-
- /* Aus exec/types.h:
- typedef void VOID;
- typedef unsigned short BOOL;
- define TRUE 1
- define FALSE 0
- */
-
- typedef signed char S8; /* 8 bit mit Vorzeichen */
- typedef unsigned char U8; /* 8 bit ohne Vorzeichen */
- typedef signed short S16; /* 16 bit mit Vorzeichen */
- typedef unsigned short U16; /* 8 bit ohne Vorzeichen */
- typedef signed long S32; /* 32 bit mit Vorzeichen */
- typedef unsigned long U32; /* 32 bit ohne Vorzeichen */
-
- typedef unsigned char *LPBYTE; /* Pointer to application memory */
- typedef VOID *LPVOID; /* Far pointer to void */
-
- typedef VOID (*CSS_CALLBACK)( U16, U32 );
-
-
- /*
- ** Gemeinsame Sachen
- */
- #ifndef NULL
- #define NULL ((VOID *)0L)
- #endif
-
- #ifndef FAR
- #define FAR /* Far-Attribut */
- #endif
-
-
- #ifdef NO_ODD_MEM_ACCESS
- #define GET_U16(a) (((U16)(*(U8 *)(a)) << 8) + ((U16)(*((U8 *)(a)+1))))
- #else
- #define GET_U16(a) (*(U16 *)(a))
- #endif
-
-
- /*
- ** Interrupt Control
- */
- #define USES_DISABLE
- #define DISABLE Disable()
- #define ENABLE Enable()
-
-
- /*
- ** Lists and nodes
- */
-
- typedef struct _Node
- {
- struct _Node *Succ;
- struct _Node *Pred;
- } IC_NODE;
-
-
- typedef struct
- {
- IC_NODE *Head;
- IC_NODE *Tail;
- IC_NODE *TailPred;
- } IC_LIST;
-
- #define NEW_LIST(l) IC_LIST l = { (VOID *)&l.Tail, NULL, (VOID *)&l.Head }
-
- #define DOLIST(list, node) \
- for (node=(VOID *)(list)->Head; ((IC_NODE *)(node))->Succ; \
- (node) = (VOID *)(((IC_NODE *)(node))->Succ))
-
- #define ISLISTEMPTY(l) (((l)->TailPred) == (IC_NODE *)(l))
- #define NEWLIST(l) {(l)->Head = (IC_NODE *)&(l)->Tail; (l)->Tail = NULL; (l)->TailPred = (IC_NODE *)&(l)->Head; }
- #define ADDHEAD(l,n) {IC_NODE *_s=(l)->Head; (l)->Head=(n); (n)->Succ=_s; (n)->Pred=(IC_NODE *)&(l)->Head; _s->Pred=(n);}
- #define ADDTAIL(l,n) {IC_NODE *_p=(l)->TailPred; (l)->TailPred=(n); (n)->Succ=(IC_NODE *)&(l)->Tail; (n)->Pred=_p; _p->Succ=(n);}
- #define REMOVE(n) {IC_NODE *_s=(n)->Succ, *_p=(n)->Pred; _p->Succ=_s; _s->Pred=_p;}
-
-
- /*
- ** Memory-Funktionen
- */
- #define OS_memcpy( d, s, l ) memcpy( (d), (s), (size_t)(l) )
- #define OS_memset( d, v, l ) memset( (d), (v), (size_t)(l) )
- #define OS_memcmp( d, s, l ) memcmp( (d), (s), (size_t)(l) )
-
-
- /*
- ** Makro INTERNAL_ERROR
- */
-
- #ifdef VERBOSE
- #define INTERNAL_ERROR OS_InternalError( __FILE__, __LINE__ )
- #else
- #define INTERNAL_ERROR
- #endif
-
-
- #endif
-